package cn.jtfadmin.core.modules.sys.domain.dto;


import cn.jtfadmin.base.lang.enums.BooleanEnum;
import cn.jtfadmin.core.enums.MenuTypeEnum;
import cn.jtfadmin.core.enums.OperateTypeEnum;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * <p>
 * 菜单权限表
 * </p>新增参数
 */
@Data
public class SysPermissionAddPDTO implements Serializable {

    /**
     * 菜单/权限名称
     */
    @NotBlank
    @Size(max = 200)
    protected String name;
    /**
     * 菜单图标，菜单时有效
     */
    @Size(max = 100)
    protected String icon;
    /**
     * 组件，菜单时有效
     */
    @Size(max = 250)
    protected String component;
    /**
     * 操作权限编码，例如：“sys:schedule:list,sys:schedule:info”,多个逗号隔开， 权限有效
     */
    @Size(max = 250)
    protected String perms;


    /**
     * 路径，菜单路径or操作权限url
     */
    protected String url;
    /**
     * 一级菜单跳转地址，菜单时有效
     */
    protected String redirect;

    /**
     * 排序，
     */
    protected Integer sortNo;

    /**
     * 类型， 菜单权限
     */
    @NotNull
    protected MenuTypeEnum menuType;


    /**
     * 描述
     */
    protected String description;


    /**
     * 是否隐藏路由菜单: 0否,1是（默认值0） ，菜单时有效
     */
    protected BooleanEnum hidden;

    /**
     * 菜单时有效，是否是路由菜单
     */

    protected BooleanEnum routeFlag;


    /**
     * 菜单时有效
     */

    protected BooleanEnum keepAlive;

    /**
     * 操作类型,权限时有效
     */

    protected OperateTypeEnum operateType;

    /**
     * 上级权限id
     */
    protected String parentId;
}
